//package cn.youyeku.sockettransmission.soket;
//
//import android.util.Log;
//
//
//import java.io.DataInputStream;
//import java.io.DataOutputStream;
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.net.Socket;
//import java.nio.channels.SocketChannel;
//import java.security.MessageDigest;
//import java.security.NoSuchAlgorithmException;
//
//import static cn.youyeku.sockettransmission.ui.ConstantAppConfig.SDCARDPATH;
//import static cn.youyeku.sockettransmission.ui.ConstantAppConfig.TYPE_FILE;
//
//
//public class SocketClientFile {
//
//    //创建连接客户端 根据类型来创建
//    private int PORT;
//    private String IP_ADDR;
//    private Socket socket;
//    private String SocketType;
//    private DataInputStream mFileIn;
//    private static DataOutputStream mFileOut;
//    private socketFileListener socketFileListener;
//    static boolean isAlive=true;
//
//    public SocketClientFile(String IP_ADDR, int PORT, String SocketType) {
//        this.PORT = PORT;
//        this.IP_ADDR = IP_ADDR;
//        this.SocketType = SocketType;
//
//    }
//
//
//    public void init() {
//
//        //传输
//        try {
//            socket = new Socket(IP_ADDR, PORT);
//
//
//            mFileIn = new DataInputStream(socket.getInputStream());
//            mFileOut = new DataOutputStream(socket.getOutputStream());
//            //发送数据处理的类型
//            sendFileText(SocketType);
//            Log.w("---", "init " + SocketType);
//            while (true) {
//                //发送文件前先要获取回应才能进行下一步
//                getFile();
//            }
//
//
//        } catch (IOException e) {
//
//            e.printStackTrace();
//            System.exit(-10);
//        }
//
//
//    }
//
//    public void getFile() throws IOException {
//        //获取文件 接收字节流
//        Log.w("---", "FileRec wait");
//
//        String msg = getFileText();
//        if (!msg.equals(TYPE_FILE)) {
//            Log.w("------", "类型错误" + msg);
//            return;
//        }
//        Log.w("客户端 ->2 ", "接收数据" + msg);
//
//        //获取名称
//        String fileName = getFileText();
//
//        Log.w("客户端 ->3 ", "接收数据 文件名" + fileName);
//        String filePath = SDCARDPATH;
//        File f = new File(filePath, fileName);
//
//        Log.w("接收的文件目录 ", filePath + fileName);
//        FileOutputStream fos = new FileOutputStream(f);
//        int max = 1024;
//        byte[] bytes = new byte[max];
//        int length;
//
////
////        sendFileText("OK");
////        Log.w("客户端 ->4 ","发送ok 字符 打开流");
//
//        //打开流
//        while (true) {
//            length = mFileIn.read(bytes, 0, bytes.length);
//
//            if (length < max) {
//                fos.write(bytes, 0, length);
//                fos.flush();
//                Log.w("last", length + "");
//                break;
//
//            }
//            if (length == 0) {
//                Log.w("zero", length + "");
//                break;
//            } else {
//                fos.write(bytes, 0, length);
//                fos.flush();
//                Log.w("last", length + "");
//            }
//
//        }
//
//
//        fos.close();
//        Log.w("", "接收完成 关闭流");
//
//        socketFileListener.onRecFileSuccess(fileName);
//
//
//    }
//
//
//    public void sendFile(String path) throws IOException, InterruptedException {
//
//        Log.w("","端口没关闭"+socket.getKeepAlive());
//
//        Log.w("----" + SocketType, "发送文件路径" + path);
//        File file = new File(path);
//        if (!file.exists()) {
//            System.out.print("文件不存在");
//            return;
//        }
//
//
//        FileInputStream fis = new FileInputStream(file);
//        String fileName = file.getName();
//
//
//        sendFileText(TYPE_FILE);
//        Thread.sleep(100);
//        sendFileText(fileName);
//        Thread.sleep(100);
//        Log.w("----", "发送名称->准备发送数据流" + socket.getLocalSocketAddress() + socket.getRemoteSocketAddress());
//        //开始发送文件
//        //字节缓冲区
//        int max = 1024;
//        byte[] bytes = new byte[max];
//
//        long progress = 0;
////Skipped 34 frames!  The application may be doing too much work on its main thread.
//
//
////        Log.w("MD5", countMd5("ssssssssssssssssssdfgg"));
//
//
//        Thread.sleep(100);
//
//        if(socket.isClosed()){
//            Log.w("","端口被关闭");
//        }
//        Log.w("","端口没关闭"+socket.getKeepAlive());
//
//        while (true) {
//            int length = fis.read(bytes, 0, bytes.length);
//
//            if (length == -1) {
//                Log.w("最后长度", "-1文件末尾");
//                break;
//            } else if (length < max) {
//                Log.w("最后长度", length + "");
//                mFileOut.write(bytes, 0, length);
//                mFileOut.flush();
//            } else {
////                Log.w("文件流数据",length+"");
//                mFileOut.write(bytes, 0, length);
//                mFileOut.flush();
//            }
////            socketFileListener.onSendFile((100 * progress / file.length()) + "%");
//        }
//
//
//        fis.close();
//
//
//        Log.w("", "发送文件完成-------------------");
//
//
//    }
//
//    public void sendFileText(String data) throws IOException {
//        Log.w("---" + SocketType, "发送数据  " + data);
//
//        mFileOut.writeUTF(data);
//        try {
//            Thread.sleep(100);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
//    }
//
//    public String getFileText() throws IOException {
//        Log.w("----------FILE", "等待UTF 文本传输");
//        return mFileIn.readUTF();
//    }
//
//
//    public void setSocketFileListener(socketFileListener listener) {
//        this.socketFileListener = listener;
//    }
//
//    public interface socketFileListener {
//        void onSendFile(String data);
//
//        void onRecFile();
//
//        void onRecFileSuccess(String fileName);
//    }
//
//
//    public String countMd5(String input) {
//        MessageDigest messageDigest = null;
//        try {
//            messageDigest = MessageDigest.getInstance("MD5");
//            byte[] bytes = messageDigest.digest(input.getBytes());
//            String result = "";
//            for (byte b : bytes) {
//                String tmp = Integer.toHexString(b & 0xff);
//                if (tmp.length() == 1) {
//                    tmp = "0" + tmp;
//                }
//                result += tmp;
//
//            }
//
//            return result;
//        } catch (NoSuchAlgorithmException e) {
//            e.printStackTrace();
//        }
//        return "";
//    }
//}
